package com.lwl.Algorithmic_data_structure.class19暴力递归2动态规划;

/**
 * @author lwl
 * @Description 给你一个数字字符串， 1->'A',2->'B',,,26->'Z'，111 -> AAA,AK,KA,请你求出这个数字可以转变为的字符串的最多个数
 * @date 2023/6/7 18:58
 */
public class Code02ConvertToLetter {

    public static void main(String[] args) {
        System.out.println(convertToLetter("111"));
    }

    static private int convertToLetter(String str) {
        return process(str.toCharArray(), 0);
    }

    private static int process(char[] chars, int index) {
        if (index == chars.length) {
            return 1;
        }
        // 0单独出现，说明之前的转换有问题
        if (chars[index] == '0') {
            return 0;
        }
        int p1 = process(chars, index + 1);

        int p2 = 0;
        if (index + 1 < chars.length && (chars[index] == '1' || (chars[index] == '2' && chars[index + 1] <= '6'))) {
            p2 = process(chars, index + 2);
        }

        return p1 + p2;
    }

}
